package subject.huisu;

public class letterCombinations {

    //    public List<String> letterCombinations(String digits) {
//        // 创建结果列表
//        List<String> combinations = new ArrayList<>();
//
//        // 处理空输入的情况
//        if (digits == null || digits.length() == 0) {
//            return combinations;
//        }
//
//        // 创建手机键盘的数字-字母映射
//        Map<Character, String> phoneMap = new HashMap<Character, String>() {{
//            put('2', "abc");
//            put('3', "def");
//            put('4', "ghi");
//            put('5', "jkl");
//            put('6', "mno");
//            put('7', "pqrs");
//            put('8', "tuv");
//            put('9', "wxyz");
//        }};
//
//        // 调用回溯函数生成所有组合
//        backtrack(combinations, phoneMap, digits, 0, new StringBuffer());
//        return combinations;
//    }
//
//    /**
//     * 回溯方法递归生成所有可能的字母组合
//     *
//     * @param combinations 结果列表（存储所有组合）
//     * @param phoneMap     手机键盘映射
//     * @param digits       输入的数字字符串
//     * @param index        当前处理的数字位置
//     * @param combination  当前构建的组合（使用StringBuffer高效修改）
//     */
//    private void backtrack(List<String> combinations,
//                           Map<Character, String> phoneMap,
//                           String digits,
//                           int index,
//                           StringBuffer combination) {
//
//        // 终止条件：已处理完所有数字
//        if (index == digits.length()) {
//            // 将当前组合添加到结果列表
//            combinations.add(combination.toString());
//        }
//        else {
//            // 获取当前数字
//            char digit = digits.charAt(index);
//            // 获取该数字对应的所有字母
//            String letters = phoneMap.get(digit);
//
//            // 遍历当前数字对应的所有字母
//            for (int i = 0; i < letters.length(); i++) {
//                // 获取当前字母
//                char letter = letters.charAt(i);
//
//                // 1. 做出选择：将当前字母添加到组合中
//                combination.append(letter);
//
//                // 2. 递归：处理下一个数字
//                backtrack(combinations, phoneMap, digits, index + 1, combination);
//
//                // 3. 回溯：撤销最后添加的字母，尝试下一个选择
//                combination.deleteCharAt(index);
//            }
//        }
//    }
}
